home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / vil / vil_bas.bas < prev    next >
Encoding:
BASIC Source File  |  1993-11-30  |  9.5 KB  |  254 lines

  1. 40030 *VIL_BAS_VER
  2. 40035 VIL_VER%=200
  3. 40040 RETURN
  4. 40070 *VIL_BEEP_INITM
  5. 40120 RETURN
  6. 40130 *VIL_BEEP_G
  7. 40170 FOR VIL_I%=1 TO 4:BEEP 363523,5,400:WAIT 5:NEXT
  8. 40175 RETURN
  9. 40185 *VIL_BEEP_B
  10. 40225 BEEP 363523,40,80:WAIT 40
  11. 40230 RETURN
  12. 40270 *VIL_WIN_INITM
  13. 40320 VIL_WIN_X%=0:VIL_WIN_Y%=0
  14. 40325 VIL_WIN_W%=0:VIL_WIN_Z%=0
  15. 40330 VIL_WIN_UB%=0:VIL_WIN_DB%=0
  16. 40335 VIL_WIN_LB%=0:VIL_WIN_RB%=0
  17. 40340 VIL_WIN_AN%=0
  18. 40345 VIL_WIN_PM%=0
  19. 40350 VIL_WIN_BFMAX&=VIL_W0&
  20. 40355 VIL_WIN_ANMAX%=VIL_W1%
  21. 40360 DIM VIL_WIN_BF%(VIL_W0&)
  22. 40365 DIM VIL_WIN_BFO&(VIL_W1%)
  23. 40370 DIM VIL_WIN_X%(VIL_W1%),VIL_WIN_Y%(VIL_W1%)
  24. 40375 DIM VIL_WIN_W%(VIL_W1%),VIL_WIN_Z%(VIL_W1%)
  25. 40385 VIL_WIN_X%(0)=0:VIL_WIN_Y%(0)=0
  26. 40390 VIL_WIN_W%(0)=639:VIL_WIN_Z%(0)=479
  27. 40400 RETURN
  28. 40410 *VIL_WIN_OP
  29. 40475 VIL_WIN_AN%=VIL_WIN_AN%+1
  30. 40480 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X%:VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y%
  31. 40485 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W%:VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z%
  32. 40490 VIL_WIN_BFO&(VIL_WIN_AN%)=VIL_WIN_BFO&(VIL_WIN_AN%-1)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+VIL_WIN_LB%+VIL_WIN_RB%+8)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+VIL_WIN_UB%+VIL_WIN_DB%+1)*4+1)/2)
  33. 40495 VIL_E%=0
  34. 40500 GET@A(VIL_WIN_X%-VIL_WIN_LB%,VIL_WIN_Y%-VIL_WIN_UB%)-(VIL_WIN_W%+VIL_WIN_RB%,VIL_WIN_Z%+VIL_WIN_DB%),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  35. 40505 IF VIL_E%THEN
  36. 40510 VIL_WIN_AN%=VIL_WIN_AN%-1
  37. 40515 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)
  38. 40520 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  39. 40525 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)
  40. 40530 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  41. 40535 ENDIF
  42. 40540 RETURN
  43. 40550 *VIL_WIN_CL
  44. 40600 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-VIL_WIN_LB%,VIL_WIN_Y%(VIL_WIN_AN%)-VIL_WIN_UB%)-(VIL_WIN_W%(VIL_WIN_AN%)+VIL_WIN_RB%,VIL_WIN_Z%(VIL_WIN_AN%)+VIL_WIN_DB%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1)
  45. 40605 VIL_WIN_AN%=VIL_WIN_AN%-1
  46. 40610 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  47. 40615 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  48. 40620 RETURN
  49. 40630 *VIL_WIN_CLDMY
  50. 40680 VIL_WIN_AN%=VIL_WIN_AN%-1
  51. 40685 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)
  52. 40690 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)
  53. 40695 RETURN
  54. 40705 *VIL_WIN_CLALL
  55. 40755 WHILE VIL_WIN_AN%
  56. 40760 GOSUB*VIL_WIN_CL
  57. 40765 WEND
  58. 40770 RETURN
  59. 40780 *VIL_WIN_PMR
  60. 40820 VIL_WIN_PM%=-1
  61. 40825 VIEW(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%)
  62. 40830 WINDOW(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%)
  63. 40835 RETURN
  64. 40845 *VIL_WIN_PMA
  65. 40885 VIL_WIN_PM%=0
  66. 40890 VIEW(0,0)-(639,479)
  67. 40895 WINDOW(0,0)-(639,479)
  68. 40900 RETURN
  69. 40930 *VIL_MSEL_INITM
  70. 40980 VIL_MSEL_MN%=0
  71. 40985 VIL_MSEL_BB%=1
  72. 40990 VIL_MSEL_BE%=9
  73. 40995 VIL_MSEL_BN%=0
  74. 41000 VIL_MSEL_BC%=0
  75. 41005 VIL_MSEL_BD%=0
  76. 41030 VIL_MSEL_KY%=0
  77. 41070 DIM VIL_MSEL_X%(VIL_W1%),VIL_MSEL_Y%(VIL_W1%)
  78. 41075 DIM VIL_MSEL_W%(VIL_W1%),VIL_MSEL_Z%(VIL_W1%)
  79. 41080 DIM VIL_MSEL_BN%(VIL_W0%)
  80. 41085 DIM VIL_MSEL_KB%(127)
  81. 41095 RESTORE 41125
  82. 41100 FOR VIL_I%=0 TO 127
  83. 41105 READ VIL_MSEL_KB%(VIL_I%)
  84. 41110 NEXT
  85. 41125 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-11,-3,-2,-3,-3:
  86. 41130 DATA-3,-3,-3,-3,-3,-3,-10,-9,-1,-3,-3,-3,-5,-6,-7,-8:
  87. 41135 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,10,12,-1,13,15,11:
  88. 41140 DATA 0,1,2,3,4,5,6,7,8,9,-3,-3,-3,14,-3,-3:
  89. 41145 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  90. 41150 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  91. 41155 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3:
  92. 41160 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-12:
  93. 41190 MOUSE 0:MOUSE 1,320,240,0
  94. 41195 RETURN
  95. 41205 *VIL_MSEL_M
  96. 41405 GOSUB*VIL_MSEL_BCMK
  97. 41410 GOSUB*VIL_MSEL_IN
  98. 41415 RETURN
  99. 41425 *VIL_MSEL_BCMK
  100. 41530 IF VIL_MSEL_BD%AND 2 THEN VIL_W1%=-1 ELSE VIL_W1%=1
  101. 41535 IF VIL_MSEL_BD%AND 4 THEN VIL_W2%=-1 ELSE VIL_W2%=1
  102. 41540 FOR VIL_I%=1 TO VIL_YN%
  103. 41545 FOR VIL_J%=1 TO VIL_XN%
  104. 41550 IF VIL_MSEL_BD%AND 1 THEN
  105. 41555 VIL_W0%=(VIL_J%-1)*VIL_YN%+VIL_I%-1+VIL_MSEL_BB%
  106. 41560 ELSE
  107. 41565 VIL_W0%=(VIL_I%-1)*VIL_XN%+VIL_J%-1+VIL_MSEL_BB%
  108. 41570 ENDIF
  109. 41575 VIL_MSEL_X%(VIL_W0%)=VIL_X%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  110. 41580 VIL_MSEL_Y%(VIL_W0%)=VIL_Y%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  111. 41585 VIL_MSEL_W%(VIL_W0%)=VIL_W%+(VIL_J%-1)*VIL_XL%*VIL_W1%
  112. 41590 VIL_MSEL_Z%(VIL_W0%)=VIL_Z%+(VIL_I%-1)*VIL_YL%*VIL_W2%
  113. 41595 NEXT
  114. 41600 NEXT
  115. 41605 RETURN
  116. 41615 *VIL_MSEL_IN
  117. 41815 VIL_W4%=MOUSE(3,0)+MOUSE(3,1)
  118. 41820 VIL_W0%=-5:VIL_W1%=-6:VIL_W2%=-7:VIL_W3%=-8
  119. 41825 IF VIL_MSEL_BD%AND 2 THEN SWAP VIL_W0%,VIL_W1%
  120. 41830 IF VIL_MSEL_BD%AND 4 THEN SWAP VIL_W2%,VIL_W3%
  121. 41835 IF VIL_MSEL_BD%AND 1 THEN SWAP VIL_W0%,VIL_W3%:SWAP VIL_W1%,VIL_W2%
  122. 41855 MOUSE 1,,,1
  123. 41860 IF VIL_MSEL_MN%THEN VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%)
  124. 41865 IF VIL_MSEL_BN%<VIL_MSEL_BB%OR VIL_MSEL_BE%<VIL_MSEL_BN%THEN VIL_MSEL_BN%=VIL_MSEL_BB%
  125. 41870 IF VIL_MSEL_BC%=0 THEN GOSUB*VIL_MSEL_BC
  126. 41880 GOSUB*VIL_MSEL_KY
  127. 41890 IF MOUSE(3,1)OR VIL_MSEL_KY%=-1 THEN
  128. 41895 VIL_W4%=MOUSE(3,0)
  129. 41900 VIL_KN%=-1
  130. 41905 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  131. 41910 VIL_KN%=-2
  132. 41915 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  133. 41920 IF VIL_WIN_PM%THEN
  134. 41925 IF VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  135. 41935 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  136. 41940 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1
  137. 41945 IF VIL_MSEL_X%(VIL_I%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_I%)THEN
  138. 41950 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN%
  139. 41955 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_J%)THEN
  140. 41960 VIL_KN%=VIL_J%
  141. 41965 GOSUB*VIL_MSEL_BC
  142. 41970 VIL_MSEL_BN%=VIL_KN%
  143. 41975 GOSUB*VIL_MSEL_BC
  144. 41980 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  145. 41985 ENDIF
  146. 41990 NEXT
  147. 41995 ENDIF
  148. 42000 NEXT
  149. 42005 ENDIF
  150. 42010 ELSE
  151. 42015 VIL_MW%=-1
  152. 42020 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1
  153. 42025 IF VIL_MSEL_X%(VIL_I%)=<VIL_MX%AND VIL_MX%=<VIL_MSEL_W%(VIL_I%)THEN
  154. 42030 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN%
  155. 42035 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MY%AND VIL_MY%=<VIL_MSEL_Z%(VIL_J%)THEN
  156. 42040 VIL_KN%=VIL_J%
  157. 42045 GOSUB*VIL_MSEL_BC
  158. 42050 VIL_MSEL_BN%=VIL_KN%
  159. 42055 GOSUB*VIL_MSEL_BC
  160. 42060 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I%
  161. 42065 ENDIF
  162. 42070 NEXT
  163. 42075 ENDIF
  164. 42080 NEXT
  165. 42085 ENDIF
  166. 42090 ELSE
  167. 42095 IF VIL_MSEL_KY%=-4 THEN
  168. 42100 GOTO 41880
  169. 42105 ELSE IF VIL_MSEL_BB%<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=VIL_MSEL_BE%THEN
  170. 42115 VIL_KN%=VIL_MSEL_KY%
  171. 42120 GOSUB*VIL_MSEL_BC:VIL_MSEL_BN%=VIL_KN%:GOSUB*VIL_MSEL_BC
  172. 42125 ELSE IF VIL_MSEL_KY%=-2 THEN
  173. 42130 VIL_KN%=VIL_MSEL_BN%
  174. 42135 ELSE IF-8<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=-5 THEN
  175. 42140 GOSUB*VIL_MSEL_BC
  176. 42145 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W0%)+(VIL_MSEL_KY%=VIL_W1%)+((VIL_MSEL_KY%=VIL_W2%)-(VIL_MSEL_KY%=VIL_W3%))*VIL_XN%
  177. 42150 VIL_MSEL_BN%=VIL_MSEL_BN%+(VIL_MSEL_KY%=VIL_W0%AND(VIL_MSEL_BN%MOD VIL_XN%)=1)*VIL_XN%
  178. 42155 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W1%AND((VIL_MSEL_BN%+1)MOD VIL_XN%)=1)*VIL_XN%
  179. 42160 VIL_MSEL_BN%=VIL_MSEL_BN%-((VIL_MSEL_BN%<VIL_MSEL_BB%)-(VIL_MSEL_BN%>VIL_MSEL_BE%))*(VIL_MSEL_BE%-VIL_MSEL_BB%+1)
  180. 42165 GOSUB*VIL_MSEL_BC
  181. 42170 GOTO 41880
  182. 42175 ELSE
  183. 42180 VIL_KN%=-3
  184. 42185 ENDIF
  185. 42190 ENDIF
  186. 42200 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_MSEL_BN%
  187. 42205 MOUSE 1,,,0
  188. 42210 VIL_MSEL_BC%=-1
  189. 42215 RETURN
  190. 42225 *VIL_MSEL_BC
  191. 42265 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Y%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%,B
  192. 42270 RETURN
  193. 42280 *VIL_MSEL_KY
  194. 42340 VIL_K$=INKEY$
  195. 42345 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$):VIL_MSEL_KY%=VIL_MSEL_KB%(VIL_KY%)ELSE VIL_KY%=0:VIL_MSEL_KY%=-4
  196. 42350 RETURN
  197. 42380 *VIL_INP_INITM
  198. 42425 VIL_INP_L%=0:VIL_INP_CX%=0
  199. 42435 MOUSE 0:MOUSE 1,320,240,0
  200. 42440 RETURN
  201. 42450 *VIL_INP_STR
  202. 42565 VIL_INP_L%=LEN(VIL_A$):VIL_INP_CX%=VIL_INP_L%
  203. 42570 MOUSE 1,,,1
  204. 42580 GOSUB*VIL_INP_GPRINT
  205. 42585 GOSUB 42805
  206. 42595 VIL_K$=INKEY$
  207. 42600 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$)ELSE VIL_KY%=0
  208. 42610 IF MOUSE(3,1)OR VIL_KY%=24 THEN
  209. 42615 VIL_KN%=-1
  210. 42620 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN
  211. 42625 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
  212. 42630 IF VIL_WIN_PM%THEN
  213. 42635 IF VIL_WIN_PM%AND VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN
  214. 42640 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y%
  215. 42645 ELSE
  216. 42650 VIL_MW%=-1
  217. 42655 ENDIF
  218. 42660 ENDIF
  219. 42665 VIL_KN%=-2
  220. 42670 ELSE IF VIL_KY%=13 THEN
  221. 42675 VIL_KN%=0
  222. 42680 ELSE
  223. 42685 IF VIL_KY%=0 THEN 42595
  224. 42690 GOSUB 42805
  225. 42695 IF VIL_KY%=29 AND VIL_INP_CX%>0 THEN VIL_INP_CX%=VIL_INP_CX%-1:GOTO 42585
  226. 42700 IF VIL_KY%=28 AND VIL_INP_CX%<VIL_INP_L%THEN VIL_INP_CX%=VIL_INP_CX%+1:GOTO 42585
  227. 42705 IF VIL_KY%>=32 AND VIL_KY%<>127 AND VIL_INP_L%<VIL_L%THEN
  228. 42715 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+VIL_K$+MID$(VIL_A$,VIL_INP_CX%+1)
  229. 42720 VIL_INP_L%=VIL_INP_L%+1:VIL_INP_CX%=VIL_INP_CX%+1
  230. 42725 ELSE IF VIL_KY%=8 AND VIL_INP_CX%>0 THEN
  231. 42730 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%-1)+MID$(VIL_A$,VIL_INP_CX%+1)
  232. 42735 VIL_INP_L%=VIL_INP_L%-1:VIL_INP_CX%=VIL_INP_CX%-1
  233. 42740 ELSE IF VIL_KY%=127 AND VIL_INP_CX%<VIL_INP_L%THEN
  234. 42745 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+MID$(VIL_A$,VIL_INP_CX%+2)
  235. 42750 VIL_INP_L%=VIL_INP_L%-1
  236. 42755 ELSE IF VIL_KY%=11 THEN
  237. 42760 VIL_A$="":VIL_INP_L%=0:VIL_INP_CX%=0
  238. 42765 ENDIF
  239. 42770 GOTO 42580
  240. 42775 ENDIF
  241. 42780 MOUSE 1,,,0
  242. 42785 GOSUB 42805
  243. 42790 RETURN
  244. 42805 LINE(VIL_X%+VIL_INP_CX%*8,VIL_Y%+17)-(VIL_X%+VIL_INP_CX%*8+7,VIL_Y%+17),XOR,%VIL_C%
  245. 42810 RETURN
  246. 42820 *VIL_INP_GPRINT
  247. 42880 LINE(VIL_X%,VIL_Y%)-(VIL_X%+VIL_L%*8-1,VIL_Y%+15),PSET,%VIL_CB%,BF
  248. 42885 SYMBOL(VIL_X%,VIL_Y%),VIL_A$,1,1,%VIL_C%
  249. 42890 RETURN
  250. 42900 *VIL_INP_MVWAIT
  251. 42940 VIL_W0%=MOUSE(9)+MOUSE(10):VIL_W0$=INKEY$
  252. 42945 WHILE ABS(MOUSE(9))<10 AND ABS(MOUSE(10))<10 AND MOUSE(2,0)+MOUSE(2,1)=0 AND INKEY$="":WEND
  253. 42950 RETURN
  254.